package com.matrix.api.order;

import com.matrix.api.im.dto.OrderCardDTO;
import com.matrix.api.order.vo.*;

import java.util.List;
import java.util.Map;

/**
 * @author 有点甜
 * @since 2025/7/27
 */
public interface OrderApi {

    /**
     * 检查订单是否可评价
     *
     * @param orderId 订单ID
     * @param userId  用户ID
     * @return 订单评价所需信息VO
     */
    OrderForReviewVO checkOrderReviewable(Long orderId, Long userId);

    /**
     * 标记订单为已评价
     *
     * @param orderId 订单ID
     */
    void markOrderAsReviewed(Long orderId);

    /**
     * 根据店铺ID列表获取近30天的月销量
     *
     * @param shopIds 店铺ID列表
     * @return Map, Key为shopId, Value为月销量
     */
    Map<Long, Integer> getMonthlySalesByShopIds(List<Long> shopIds);

    /**
     * 获取所有菜品近30天的月销量
     *
     * @return Map, Key为productId, Value为月销量
     */
    Map<Long, Integer> getProductMonthlySales();

    /**
     * 根据订单ID获取用于IM聊天的订单卡片信息
     * @param orderId 订单ID
     * @param requesterId 请求者ID，用于权限校验
     * @return 订单卡片信息 DTO
     */
    OrderCardDTO getOrderCardInfo(Long orderId, Long requesterId);
}